﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entities;
using Common;
using Datalayer;
using System.Security.Cryptography;

namespace Common
{
    public class ContentMail
    {
        public static string sentContentMail_Active(string strlink,string hoten)
        {
            string  ct = "Chào bạn: "+hoten+"<br />Chúc mừng bạn đã đăng ký thành công tài khoản trên công thông tin điện tử Kontum!<p>";
                    ct +="Bạn vui lòng bấm vào đường dẫn sau:<p>"+strlink+"<p> để hoàn tất quá trình xác nhận thông tin tài khoản này. <br />";
                    ct += "Lưu ý: Đây là thư điện tử tự động, vui lòng không trả lời thư này.<br />";
                    ct += "Cảm ơn bạn đã sử dụng dịch vụ của Cổng thông tin điện tử Kontum.<br /><br />";
                    ct += "Trân trọng,<br /> ";
                    ct += "Thay mặt ban quản trị Cổng thông tin điện tử Kontum.";

                    return ct;
        }

        public static string sentContentMail_GopY( string hoten)
        {
            string ct = "Chào bạn: " + hoten + "<br />Cảm ơn bạn đã gửi ý kiến góp ý - kiến nghị tới công thông tin điện tử Kontum!<p>";
            ct += "Mọi thông tin trả lời sẽ được gửi tới bạn trong thời gian ngắn nhất <br />";
            ct += "Lưu ý: Đây là thư điện tử tự động, vui lòng không trả lời thư này.<br />";
            ct += "Cảm ơn bạn đã sử dụng dịch vụ của Cổng thông tin điện tử Kontum.<br /><br />";
            ct += "Trân trọng,<br /> ";
            ct += "Thay mặt ban quản trị Cổng thông tin điện tử Kontum.";

            return ct;
        }

        public static string sentContentMail_ForgetPassword(string hoten,string Tentk,string matkhau)
        {
            string ct = "Chào " + hoten + " ," ;

            ct +="<p>Cảm ơn bạn đã sử dụng dịch vụ của trang thông tin điện tử KomTum.";
            ct += "Chúng tôi nhận được yêu cầu cung cấp mật khẩu mới cho tài khoản của bạn.";
            ct += "Tên tài khoản: " + Tentk;
            ct +="Mật khẩu: "+ matkhau;
            ct += "Lưu ý: Đây chỉ là mật khẩu tạm thời. Bạn vui lòng bấm vào đây <br/> http://localhost:49562/Login.aspx <br/> để đăng nhập và thay đổi mật khẩu mới an toàn hơn.";
            ct +="Trân trọng,";
            ct += "Cổng thông tin điện tử KomTum.";
            return ct;
        }

        public static void sendMailActive(string sGuid)
        {
            String Slocalhost = @"http://localhost:49562/RegisterActive.aspx?";
            string LinkUser = "UserID=" + sGuid;
            string Security = Encrypt(DateTime.Now.ToString(), sGuid, true);
            string LinkMd5 = "Active=" + Security;
            string createLink = Slocalhost + LinkUser + "&" + LinkMd5;
            createLink = createLink.Trim();
            IQueryMgr iq = QueryMgr.GetDbInstance();
            User ur = new User();
            ur = iq.UR_GetUserByID(MethodCommon.Get_Guid(sGuid));
            ur.SecurityCode = Security;
            //lưu mã bảo vệ vào tài khoản 
            iq.UR_EditUser(ur);
            //Gửi mail tới người dùng
            MethodCommon.SendMail(ur.Mail, "Email xác nhận", ContentMail.sentContentMail_Active(createLink, ur.FullName));
        }

        public static void sendMailForgetPassword(string sGuid)
        {
            IQueryMgr iq = QueryMgr.GetDbInstance();
            User ur = new User();
            ur = iq.UR_GetUserByID(MethodCommon.Get_Guid(sGuid));
            
            MethodCommon.SendMail(ur.Mail, "Email Quên tài khoản", ContentMail.sentContentMail_ForgetPassword(ur.FullName, ur.UserName, ur.Password));
        }

        public static void sendMail_Gopy(string sGuid)
        {
            IQueryMgr iq = QueryMgr.GetDbInstance();
            Comment ur = new Comment();
            ur = iq.CM_GetCommentByID(MethodCommon.Get_Guid(sGuid));
            
            //Gửi mail tới người dùng
            MethodCommon.SendMail(ur.Email, "Gửi Góp ý - kiến nghị", ContentMail.sentContentMail_GopY(ur.FullName));
        }

        public static string Encrypt(string toEncrypt, string key, bool useHashing)
        {
            byte[] keyArray;
            byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

            if (useHashing)
            {
                MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
                keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));
            }
            else
                keyArray = UTF8Encoding.UTF8.GetBytes(key);

            TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
            tdes.Key = keyArray;
            tdes.Mode = CipherMode.ECB;
            tdes.Padding = PaddingMode.PKCS7;

            ICryptoTransform cTransform = tdes.CreateEncryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
        }
    }
}
